Secure elements are small devices comprising a memory, a microprocessor and an operating system for computing treatments. Such secure elements may comprise a plurality of memories of different types, like non-volatile memory and volatile memory. They are called “secure” because they are able to control the access to the data they contain and to authorize or not the use of data by other machines. The secure elements may also provide computation services based on cryptographic components. In general, secure elements have limited computing resources and limited memory resources and they are intended to be connected to a host machine which provides them with electric power. Secure elements may be removable or fixed to a host machine. For example, smart cards are a kind of secure elements.
A secure element may contain applications and their associated applicative data which encompass user data, file systems and secret key. Such an application may be developed as a package or a set of packages which is stored into the secure element. One or several instances of the package(s) are then created as needed. Each instance owns, handles and store its own instance data.
Secure elements may be accessed by a remote server via a wireless channel or through a wired network, like Internet for instance. For example, secure elements which are intended to be used in Telecom domain or Machine-To-Machine (M2M) domain are able to manage an OTA (Over-The-Air) channel. These secure elements may also be accessed through the HyperText Transfer Protocol, usually called HTTP or HTTPS for the secure mode. Thus, a distant server can remotely manage the content of a secure element like an UICC (Universal Integrated Circuit Card) through a dedicated communication session using a specific protocol. For example, the server may use the RAM (Remote Applet Management) mechanism as defined by GlobalPlatform® v 2.2 standard-Amendment B “RAM over HTTP” or the OMA-DM (Open Mobile Alliance-Device Management) protocol as defined by OMA-TS-DM V1.2.1 standard.
A remote server can send a new version or an upgrade of a package. In this case, the instances linked to the previous package are deleted and a temporary back up of their instance data is stored in the remote server. Then the new version of the package is installed, new instances are created and populated with instance data retrieved from the back up area. Such a scheme is a painful task and may lead to data loss. Moreover, the sending of backup data to the server requests a part of bandwidth which may be important due to the huge number of secure elements to be upgraded.
There is a need for allowing an enhanced updating of package allowing to keep current instance data available for instances instantiated from a new package in a secure element.